home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 December / Australian PC User - December 2003 (CD2).iso / software / apps / files / dwmx2k4.exe / Disk1 / data1.cab / Configuration_En / DataSources / JSP / Callable.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  10.9 KB  |  341 lines

  1. // Copyright 2000, 2001, 2002, 2003 Macromedia, Inc. All rights reserved.
  2. var callable_filename = "SP_D.gif"
  3. var callable_rs_filename = "RS_D.gif"
  4. var datasourceleaf_filename = "DSL_D.gif"
  5.  
  6.  
  7. function addDynamicSource()
  8. {
  9.   dw.popupServerBehavior("Callable.htm");
  10. }
  11.  
  12. function findDynamicSources()
  13. {
  14.   var DSL = new Array();
  15.   var currentdom = dreamweaver.getDocumentDOM();
  16.  
  17.     if (currentdom) {
  18.     var nodes = currentdom.getElementsByTagName("MM_CALLABLE");
  19.     for (var index =0 ; index < nodes.length ; index++)
  20.     {
  21.       var node = nodes.item(index);
  22.       if (node)
  23.       {
  24.         ssRec = findSSrec(node,"callable");
  25.         if (ssRec) 
  26.         {
  27.           if (ssRec.recordset)
  28.           {
  29.             DSL[DSL.length] = new ObjectInfo(ssRec.title, callable_filename, true, "Recordset.htm",ssRec.recordset);
  30.           }
  31.           else
  32.           {
  33.             DSL[DSL.length] = new ObjectInfo(ssRec.title, callable_filename, true, "Callable.htm","")
  34.           }
  35.         }
  36.       }
  37.     }
  38.   }
  39.  
  40.   return DSL;
  41. }
  42.  
  43. ////////////////////////////////////////////////////////////////////////////////
  44. //  Function: generateDynamicSourceBindings()
  45. //
  46. //  Returns a list of bindings for elementNode on the page.
  47. ////////////////////////////////////////////////////////////////////////////////
  48. function generateDynamicSourceBindings(elementName)
  49. {
  50.   var BindingsArray = new Array();
  51.   var outArray;
  52.  
  53.   ssRec = findSSrecByTitle(elementName,"callable")
  54.  
  55.   if (ssRec) {
  56.     elementNode = ssRec.selectedNode;
  57.   } else {
  58.     elementNode = findSourceNode(elementName);
  59.   }
  60.  
  61.   if (elementNode) 
  62.   {
  63.     var comDom = dreamweaver.getDocumentDOM(dreamweaver.getConfigurationPath() + "/ServerBehaviors/Jsp/Callable.htm")
  64.     if(elementNode.tagName == "MM_CALLABLE")
  65.     {
  66.       CachedParametersArray  = getCachedParametersArray(elementNode.getAttribute("NAME"));
  67.  
  68.       if (CachedParametersArray .length)
  69.       {
  70.         //we use +3 since our Parameter has name,type,direction
  71.         for (var j=0; j < CachedParametersArray .length ; j+=3)
  72.         {
  73.           var dir = CachedParametersArray[j+1];
  74.           if (dir == 4 || dir == 2 || dir == 3)
  75.           {
  76.              BindingsArray.push(CachedParametersArray[j]);
  77.           }
  78.         }
  79.       }
  80.       else
  81.       {
  82.       BindingsArray = comDom.parentWindow.getDynamicBindings(elementNode)
  83.         var ss = findSSrec(elementNode, "callable")
  84.         if (ss)
  85.         {
  86.           var found = (ss.callableText.search(/\s*call\s*([^\s\(\)\}]*)\s*/i) > -1)
  87.           if (found)
  88.           {
  89.             var proc = RegExp.$1
  90.             var CachedParameterString = MMDB.getSPParamsAsString(ss.connectionName,proc);
  91.             SaveParametersForCache(elementNode.getAttribute("NAME"),CachedParameterString);
  92.           }
  93.  
  94.         }
  95.       }
  96.  
  97.       var rnode = GetResultsetNodeForCallable(elementNode)
  98.       if (rnode) 
  99.       {
  100.         CachedCTArray  = getCachedColumnAndTypeArray(rnode.getAttribute("NAME"));
  101.         if (CachedCTArray.length)
  102.         {
  103.           for (var j=0; j < CachedCTArray.length ; j+=2)
  104.           {
  105.             BindingsArray.push(rnode.getAttribute("NAME") + "." + CachedCTArray[j]);
  106.           }
  107.         }
  108.         else
  109.         {
  110.         var colArray = new Array();
  111.         colArray = comDom.parentWindow.getDynamicBindings(rnode)
  112.           SaveColumnAndTypeArrayForCache(rnode.getAttribute("NAME"),colArray);
  113.           for (var cvar=0;cvar < colArray.length ;cvar+=2) 
  114.           {
  115.           BindingsArray.push(rnode.getAttribute("NAME") + "." + colArray[cvar]);
  116.         }
  117.         }
  118.         BindingsArray.push(rnode.getAttribute("NAME") + "."+ MM.LABEL_FirstRecordIndex);
  119.         BindingsArray.push(rnode.getAttribute("NAME") + "."+ MM.LABEL_LastRecordIndex);
  120.         BindingsArray.push(rnode.getAttribute("NAME") + "."+ MM.LABEL_TotalRecordIndex);
  121.       }
  122.  
  123.       outArray = GenerateObjectInfoForSourceBindings(BindingsArray, datasourceleaf_filename, "Callable");
  124.     }
  125.     else if(elementNode.tagName == "MM_CALLRESSET")
  126.     {
  127.       CachedCTArray  = getCachedColumnAndTypeArray(elementNode.getAttribute("NAME"));
  128.       if (CachedCTArray.length)
  129.       {
  130.         for (var j=0; j < CachedCTArray.length ; j+=2)
  131.         {
  132.           BindingsArray.push(CachedCTArray[j]);
  133.         }
  134.       }
  135.       else
  136.       {
  137.       var colArray = new Array();
  138.       colArray = comDom.parentWindow.getDynamicBindings(elementNode)
  139.         SaveColumnAndTypeArrayForCache(elementNode.getAttribute("NAME"),colArray);
  140.       for (var cvar=0;cvar < colArray.length ;cvar+=2) 
  141.       {
  142.         BindingsArray.push(colArray[cvar]);
  143.       }
  144.       }
  145.  
  146.       BindingsArray.push(MM.LABEL_FirstRecordIndex);
  147.       BindingsArray.push(MM.LABEL_LastRecordIndex);
  148.       BindingsArray.push(MM.LABEL_TotalRecordIndex);
  149.       outArray = GenerateObjectInfoForSourceBindings(BindingsArray, datasourceleaf_filename, "Callable");
  150.     }
  151.   }
  152.  
  153.   return outArray;
  154.  
  155. }
  156.  
  157.  
  158. ////////////////////////////////////////////////////////////////////////////////
  159. //
  160. //  Function: generateDynamicDataRef
  161. //
  162. //  Returns a dynamic binding string.
  163. ////////////////////////////////////////////////////////////////////////////////
  164. function generateDynamicDataRef(elementName,bindingName,dropObject)
  165. {
  166.   var retStr="";
  167.  
  168.   var tokenindex = bindingName.indexOf(".");
  169.   if (tokenindex != -1) 
  170.   {
  171.     elementName = bindingName.substring(0,tokenindex);
  172.     bindingName = bindingName.substring(tokenindex+1);
  173.   }
  174.  
  175.   ssRec = findSSrecByTitle(elementName,"callable")
  176.   if (ssRec) 
  177.   {
  178.     elementNode = ssRec.selectedNode;
  179.   } 
  180.   else 
  181.   {
  182.     elementNode = findSourceNode(elementName);
  183.   }
  184.  
  185.   if (elementNode && elementNode.tagName == "MM_CALLRESSET")
  186.   {
  187.     if ((bindingName == MM.LABEL_FirstRecordIndex) || (bindingName == MM.LABEL_LastRecordIndex) || (bindingName == MM.LABEL_TotalRecordIndex))  
  188.     {
  189.       //  Recordset statistics.  These are useful when the page 
  190.       //  is being used for navigation through a large set of records.
  191.       //  Typically you add some text to the page that says something
  192.       //  like:
  193.       //  Records 10 to 15 of 63
  194.       //  where 10 corresponds to [first record index]
  195.       //  15 corresponds [last record index]
  196.       //  63 corresponds [total records]
  197.  
  198.       if (bindingName == MM.LABEL_FirstRecordIndex) 
  199.       {
  200.         retStr = "<%= (" + elementName + "_first" + ") %>";
  201.       }
  202.       else if (bindingName == MM.LABEL_LastRecordIndex) 
  203.       {
  204.         retStr = "<%= (" + elementName + "_last" + ") %>";
  205.       }
  206.       else if (bindingName == MM.LABEL_TotalRecordIndex)  
  207.       {
  208.         retStr = "<%= (" + elementName + "_total" + ") %>";
  209.       }
  210.     }
  211.     else 
  212.     {
  213.       retStr = "<%= " + "(((" + elementName + "_data = " + elementName + ".getObject(\"" + bindingName + "\"))==null || " + elementName + ".wasNull())?\"\":" + elementName + "_data)" + "%>";
  214.     }
  215.   }
  216.   else if(elementNode && (elementNode.tagName == "MM_CALLABLE"))  
  217.   {
  218.     var cDom = dreamweaver.getDocumentDOM(dreamweaver.getConfigurationPath() + "/ServerBehaviors/Jsp/Callable.htm")
  219.     bindingIndex    = cDom.parentWindow.generateDynamicDataRef(elementNode,bindingName);
  220.     retStr    = "<%= " + "(((" + elementNode.getAttribute("NAME") + "_data = " + elementNode.getAttribute("NAME") + ".getObject(" + bindingIndex + "))==null || " + elementNode.getAttribute("NAME") + ".wasNull())?\"\":" + elementNode.getAttribute("NAME") + "_data)" + "%>";
  221.   }
  222.  
  223.   // If the string is being inserted inside a script block, strip the
  224.   // script delimiters.
  225.   if (dwscripts.canStripScriptDelimiters(dropObject))
  226.     retStr = dwscripts.stripScriptDelimiters(retStr);
  227.  
  228.   return retStr;
  229. }
  230.  
  231.  
  232. ////////////////////////////////////////////////////////////////////////////////
  233. //
  234. //  Function: inspectDynamicDataRef
  235. //
  236. //  Inspects a dynamic binding string and returns a pair of source and binding.
  237. ////////////////////////////////////////////////////////////////////////////////
  238. function inspectDynamicDataRef(expression)
  239. {
  240.   var retArray = new Array();
  241.   if(expression.length) 
  242.   {
  243.     // Quickly reject if the expression doesn't contain "<%="
  244.     var exprIndex = expression.indexOf("<%=");
  245.     if (exprIndex != -1)
  246.     {
  247.       // No need to search the string prior to the "<%="
  248.       expression = expression.substr(exprIndex);
  249.  
  250.       var TranslatorDOM = dreamweaver.getDocumentDOM(dreamweaver.getConfigurationPath() + "/Translators/JSP.htm");
  251.       if (TranslatorDOM)  
  252.       {
  253.         TranslatedStr = TranslatorDOM.parentWindow.miniTranslateMarkup("", "", expression, false);
  254.         if (TranslatedStr.length)
  255.         {
  256.           var found = TranslatedStr.search(/mm_dynamic_content\s+source=(\w+)\s+binding="([^"]+)"/i)
  257.           if (found != -1)
  258.           {
  259.             //map the name to node 
  260.             elementNode = findSourceNode(RegExp.$1);
  261.             if (elementNode)
  262.             {
  263.               if (elementNode.tagName == "MM_CALLRESSET") 
  264.               {
  265.                 ///map the node to SSRec to get the title.
  266.                 parentNode = elementNode.parentNode;
  267.                 ssRec = findSSrec(parentNode,"callable");
  268.               } 
  269.               else 
  270.               {
  271.                 ssRec = findSSrec(elementNode,"callable");
  272.               }
  273.               
  274.               if (ssRec) 
  275.               { 
  276.                 retArray[0] = ssRec.title;
  277.  
  278.                 if (elementNode.tagName == "MM_CALLRESSET") 
  279.                 {
  280.                   retArray[1] = RegExp.$1 + "." + RegExp.$2;
  281.                 } 
  282.                 else 
  283.                 {
  284.                   if (ssRec.ParamArray)
  285.                   {
  286.                     for (i = 0 ; i < ssRec.ParamArray.length; i++)
  287.                     {
  288.                       if (i+1 == parseInt(RegExp.$2))
  289.                       {
  290.                         var thisParam = ssRec.ParamArray[i];
  291.                         retArray[1] = thisParam.name;
  292.                         break;
  293.                       }
  294.                     }
  295.                   }
  296.                   else
  297.                   {
  298.                       retArray[1] = RegExp.$2;
  299.                   }
  300.                 }
  301.               }
  302.             }
  303.           }
  304.             //alert("source=" + retArray[0] + " binding=" + retArray[1])
  305.         }
  306.       }
  307.     }
  308.   }
  309.   return retArray;
  310. }
  311.  
  312.  
  313. ////////////////////////////////////////////////////////////////////////////////
  314. //
  315. //  Function: deleteDynamicSource
  316. //
  317. //  Deletes a dynamic source from the document.
  318. ////////////////////////////////////////////////////////////////////////////////
  319. function deleteDynamicSource(sourceName,bindingName)
  320. {
  321.   ssRec = findSSrecByTitle(sourceName,"callable")
  322.  
  323.   if (ssRec) {
  324.     elementNode = ssRec.selectedNode;
  325.     var dom = dw.getDocumentDOM();
  326.     if (elementNode)  {
  327.       if (!bindingName) 
  328.       {
  329.         dw.serverBehaviorInspector.deleteServerBehavior(ssRec);
  330.       }
  331.       else
  332.       {
  333.         alert(MM.MSG_CantDelColumn);
  334.       }
  335.     }
  336.   }
  337.  
  338. }
  339.  
  340.  
  341.